package com.example.eventreg.Student;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.eventreg.security.JwtUtil;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import java.net.http.HttpRequest;

@Service//标记类为 Spring 的服务组件
public class StudentService {

    @Autowired
    private StudentMapper usersMapper;  // MyBatis-Plus 自动注入 mapper

    @Autowired
    private JwtUtil jwtUtil;  // 注入 JwtUtil 工具类，用来生成 Token

    /**
     * 通过用户名或邮箱验证用户身份并生成 JWT Token
     * @param loginData 用户名或邮箱
     * @param password 用户密码
     * @return 生成的 JWT Token
     */
    public String authenticateUser(String loginData, String password) {
        // 查询数据库中的用户，支持根据用户名或邮箱查询
        Student student = usersMapper.selectOne(new QueryWrapper<Student>()
                .eq("sphone", loginData)
                .or()
                .eq("semail", loginData)
                .or()
                .eq("sid", loginData));

        // 用户不存在或密码不匹配，抛出异常
        if (student == null) {
            System.out.println(loginData);
            System.out.println(password);
            throw new RuntimeException("用户不存在");
        }

        if (!password.equals(student.getPassword())) {
            throw new RuntimeException("密码错误");
        }
        // 用户认证通过，生成 JWT Token
        return jwtUtil.generateTokenS(student.getSid(), student.getSname());
    }
    public String getToken(){
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
                .getRequest();
        String token = request.getHeader("token");
        return token;
    }
}